package com.example.common.core.annotation;

import java.lang.annotation.*;

/**
 * @name: NoAuth
 * @description: 如果拥有该注解，则不需要验证是否登录
 * @author: xw.s
 * @date: 2021/5/31-15:49
 *
 * @Target 定义注解的使用位置，用来说明该注解可以被声明在那些元素之前。
 * ElementType.TYPE：说明该注解只能被声明在一个类前。
 * ElementType.FIELD：说明该注解只能被声明在一个类的字段前。
 * ElementType.METHOD：说明该注解只能被声明在一个类的方法前。
 * ElementType.PARAMETER：说明该注解只能被声明在一个方法参数前。
 * ElementType.CONSTRUCTOR：说明该注解只能声明在一个类的构造方法前。
 * ElementType.LOCAL_VARIABLE：说明该注解只能声明在一个局部变量前。
 * ElementType.ANNOTATION_TYPE：说明该注解只能声明在一个注解类型前。
 * ElementType.PACKAGE：说明该注解只能声明在一个包名前
 *
 * @Constraint 通过使用validatedBy来指定与注解关联的验证器
 *
 * @Retention 用来说明该注解类的生命周期。
 * RetentionPolicy.SOURCE: 注解只保留在源文件中
 * RetentionPolicy.CLASS : 注解保留在class文件中，在加载到JVM虚拟机时丢弃
 * RetentionPolicy.RUNTIME: 注解保留在程序运行期间，此时可以通过反射获得定义在某个类上的所有注解。
 *
 */
@Target({ElementType.TYPE, ElementType.METHOD})  //可以用在类上和方法上
@Retention(RetentionPolicy.RUNTIME) //注解保留在程序运行期间，此时可以通过反射获得定义在某个类上的所有注解。
@Inherited   //放在父类上，该注解可以被子类继承，但是与接口无关放在接口上，子类或子接口不会继承父接口的注解
@Documented //使用@Documented，在生成javadoc的时候就会把@Documented注解给显示出来
public @interface NoLoginAuth {
}
